1
ข้ามการนำเข้ารหัสแหล่งที่มา
AI024Lesson 3
00:00

ในระบบนิเวศของ ROCm, การนำเข้ารหัสแหล่งที่มา มักถูกเข้าใจผิดว่าเทียบเท่ากับประสิทธิภาพที่เท่าเทียมกัน อย่างไรก็ตาม โค้ด HIP ที่สามารถใช้งานได้ทั่วไป ช่วยให้ฐานโค้ดเดียวทำงานได้บนฮาร์ดแวร์จากผู้ผลิตต่าง ๆ (AMD และ NVIDIA) การได้รับอัตราการส่งผ่านสูงสุดจำเป็นต้องยอมรับว่า การนำเข้ารหัสแหล่งที่มาและประสิทธิภาพของไบนารีเป็นประเด็นที่แยกจากกัน

1. ความขัดแย้งของการนำเข้ารหัสแหล่งที่มา

โปรแกรม HIP สามารถนำเข้ารหัสแหล่งที่มาได้ซึ่งหมายความว่าโครงสร้างคำสั่งและตรรกะยังคงคงที่ อย่างไรก็ตามสถาปัตยกรรมชุดคำสั่ง (ISA) ที่อยู่เบื้องหลังแตกต่างกันอย่างมากระหว่างรุ่นต่าง ๆ (เช่น จุดเริ่มต้นของ AMD GCN เปรียบเทียบกับ RDNA) การสร้างแบบไม่ใส่ใจความแตกต่างเหล่านี้อาจทำให้เกิดการลดลงอย่างมากในด้านประสิทธิภาพ

2. ความไวต่อสถาปัตยกรรม

เพื่อให้ได้ประสิทธิภาพสูงสุด ไบนารีที่ดียังคงต้องพิจารณาความเหมาะสมกับสถาปัตยกรรมคอมไพเลอร์ต้องปรับแต่งการจัดสรรเรจิสเตอร์ การวางแผนลำดับงานเวฟฟรอน/เวฟพาร์ และรูปแบบการเข้าถึงหน่วยความจำโดยเฉพาะสำหรับหน่วยประมวลผลของกราฟิกการ์ดเป้าหมาย การไม่ระบุสถาปัตยกรรมเป้าหมายจะทำให้ไม่สามารถใช้อุปกรณ์เฉพาะเจาะจง เช่น หน่วยคูณ-บวกแมทริกซ์รวม (MFMA) ได้

แหล่งที่มาของ HIP แบบรวมปรับแต่งสำหรับ AMD (amdgcn)ปรับแต่งสำหรับ NVIDIA (nvptx)ช่องว่างด้านการปรับแต่ง

ความเข้ากันได้ในเชิงการทำงานไม่ได้หมายความว่าประสิทธิภาพระดับไบนารีจะเท่าเทียมกัน

3. ข้อกำหนดของระบบการสร้าง

การขยายความสามารถเกินกว่า "สวัสดีโลก" ต้องอาศัยระบบการสร้างที่ซับซ้อน (เช่น CMake) ที่จัดการการสร้างเส้นทางไบนารีที่ได้รับการปรับแต่งหลายเส้นทางจากโครงสร้างแหล่งที่มาเดียว เพื่อให้มั่นใจว่าคำสั่งที่ถูกต้องจะถึงฮาร์ดแวร์ที่เหมาะสม

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>